/**
 * @(#)ChannelApkInfoService.java 2016年11月11日
 * Copyright(C) 2016 ZHEXIN IT CO.,LTD. All rights reserved.
 */
package org.jsbd.boss.service;

import java.util.List;
import java.util.Map;

import org.jsbd.boss.common.DataGridModel;
import org.jsbd.boss.domian.RetentPayConfig;
import org.jsbd.boss.domian.channel.ApkLoginTypeConfig;
import org.jsbd.boss.domian.channel.ApkRetentConfig;
import org.jsbd.boss.domian.channel.ChannelApkConfig;
import org.jsbd.boss.domian.channel.ChannelApkConfigDto;
import org.jsbd.boss.domian.channel.TasktimeDto;
import org.springframework.web.multipart.MultipartFile;

/**
 * apk信息服务
 * 
 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
 * @version 1.0.0
 */
public interface IChannelApkInfoService {

	/**
	 * selectAllAPkInfos:查询所有留存apk信息
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @return
	 */
	public List<ApkRetentConfig> selectAllSimpleRetentApkInfos();

	/**
	 * 
	 * selectChannelApkConfig:新增任务apk配置信息 日限大于0
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param mark
	 * @return
	 */
	public ChannelApkConfig selectChannelApkConfig(String mark);

	/**
	 * selectApkInfos:仅仅查询APK配置信息，不含其它表配置信息
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> selectApkInfos(ChannelApkConfig config);

	/**
	 * 
	 * insertApkConfig:插入apk
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param apkConfig
	 * @return
	 */
	public Integer insertApkConfig(ChannelApkConfig apkConfig);

	/**
	 * 
	 * updateApkConfig:更新
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param apkConfig
	 * @return
	 */
	public Integer updateApkConfig(MultipartFile[] file, ChannelApkConfig apkConfig);

	public Integer updateApkConfig(ChannelApkConfig apkConfig);

	/**
	 * 
	 * getConfigList: 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param form
	 * @return
	 */
	public List<ChannelApkConfig> getConfigList(ChannelApkConfig channelApkConfig);

	public int getCountOfConfig(ChannelApkConfig channelApkConfig);

	public Integer saveApkConfig(MultipartFile[] file, ChannelApkConfig channelApkConfig);
	
	public Integer saveCopyApkConfig(MultipartFile[] file, ChannelApkConfig channelApkConfig);

	public ChannelApkConfig selectApkConfig(String mark);

	public Integer delApkConfig(String mark);

	public List<ApkLoginTypeConfig> selectApkLoginConfigList(String mark);

	public void insertAndUpdateApkLoginTypeConfig(List<ApkLoginTypeConfig> list);

	ApkRetentConfig selectRetentApkConfig(String mark, Integer retentDay);

	ApkRetentConfig selectRetentConfig(String mark, Integer retentMonth, Integer execTimes);

	/**
	 * 
	 * selectApkConfigsAndSimulator:获取所有有效的apk配置信息以及对应的模拟器版本信息
	 * 
	 * @author <a href="mailto:zhouchao@xingbook.com" >周超</a>
	 * @return
	 */
	public List<ChannelApkConfig> selectApkConfigsAndSimulator();

	/**
	 * queryApkInfos:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> queryApkInfos(ChannelApkConfig config);

	/**
	 * queryApkList:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param apkConfig
	 * @return
	 */
	public List<ChannelApkConfig> queryApkList(ChannelApkConfig apkConfig);

	/**
	 * selectAllApkInfos:查询所有apk
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @return
	 */
	public List<ChannelApkConfig> selectAllApkInfos();
	
	public List<ChannelApkConfig> selectAllSimpleApk();

	/**
	 * getExportMsg:补全需要导出的数据
	 * 
	 * @author <a href="mailto:zhangbinghua@zhexinit.com" >zbh</a>
	 * @param list
	 * @return
	 */
	List<ChannelApkConfig> getExportMsg(List<ChannelApkConfig> list);

	/**
	 * selectApkConfigByid:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:zhangbinghua@zhexinit.com" >zbh</a>
	 * @param id
	 * @return
	 */
	ChannelApkConfig selectApkConfigByid(int id);

	public List<TasktimeDto> getTasktimeByBaseList();

	public Map<String, Object> selectAllRetentMarkInfo(DataGridModel page, RetentPayConfig retentPayConfig);

	/**
	 * 批量修改版本号
	 * @param marks 
	 * @param sysVer
	 */
	public void batchEditVerSubmit(String marks, String sysVer);
	
	/**
	 * 批量上传文件
	 * @param marks
	 * @param file
	 */
	public void batchEditFileSubmit(String marks, MultipartFile[] file);

	/**
	 * 获取所有mark和apkname集合
	 * @return
	 */
	public List<ChannelApkConfig> getAllMarkAndApkname();

	public void batchUpdateApkConfig(MultipartFile[] file, ChannelApkConfig apkConfig);
	
	/**
	 * 按isDelete获取包信息
	 * 
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param isDelete 删除标记
	 * @param keywords 查询关键字
	 * @return 包信息
	 */
	public List<ChannelApkConfigDto> getConfigApkListByIsdelete(Integer isDelete, List<String> keywords);

	public List<ApkLoginTypeConfig> selectApkLoginConfigList();

}
